In many of today's integrated circuits (IC's), serializer/deserializer (SerDes) circuits are implemented to enable the IC's to exchange information with each other and with other components at very high data rates. The SerDes circuits include a transmitter and a receiver. Typically, information is sent from a transmitter on one IC to a receiver on another IC through a series of analog pulses. Specifically, to send a digital bit of information, a transmitter determines whether the bit that it wants to send is a digital 1 or a digital 0. If the bit is a digital 1, the transmitter generates an analog signal (which may be made up of a single signal or a pair of differential signals) having a positive voltage. If the bit is a digital 0, the transmitter generates an analog signal having a negative voltage. After generating the analog signal, the transmitter sends the analog signal as a pulse having a certain duration to the receiver along a communications link. Upon receiving the analog signal, the receiver determines whether the analog signal has a positive voltage or a negative voltage. If the voltage is positive, the receiver determines that the analog signal represents a digital 1. If the voltage is negative, the receiver determines that the analog signal represents a digital 0. In this manner, the transmitter is able to provide digital information to the receiver using analog signals.
Ideally, the receiver should receive analog pulses that closely resemble the analog pulses that were sent by the transmitter. Unfortunately, due to a pulse response effect that is experienced at high data rates, this ideal cannot be achieved. In fact, the analog signal that is received by the receiver often differs from the pulse that was sent by the transmitter by such a degree that it is often difficult for the receiver to determine whether the received analog signal represents a digital 1 or a digital 0.
To elaborate upon the concept of a pulse response, reference will be made to the sample pulse response shown in FIG. 1. FIG. 1 shows an example of what may be received by a receiver in response to a single positive-voltage pulse (representing a digital 1) sent by the transmitter. In the example shown in FIG. 1, the pulse is sent by the transmitter in time interval x−4 and received by the receiver four time intervals later beginning with time interval x. Notice that even though the transmitter sent a pulse lasting only a single time interval, the receiver does not receive that pulse in just a single time interval. Instead, the receiver receives an analog signal that lasts for several time intervals. During time interval x, the received signal has a magnitude of h0. During the next time interval (interval x+1), the received signal still has a magnitude of h1. During the next several time intervals, the received signal still has magnitudes of h2, h3, h4, and so on. Thus, even though the transmitter sent a pulse lasting only one time interval, the receiver receives a signal that lasts for many time intervals.
Because of this pulse response effect, a pulse sent in one time interval affects pulses sent in future time intervals. To illustrate, suppose that the transmitter sends another positive-voltage pulse in time interval x−3, and that this pulse is received by the receiver beginning in time interval x+1. During time interval x+1, the receiver would sense the h0 voltage of the pulse sent in time interval x−3. The receiver would also sense the h1 voltage of the pulse previously sent in time interval x−4. Suppose further that the transmitter sends another positive-voltage pulse in time interval x−2, and that this pulse is received by the receiver beginning in time interval x+2. During time interval x+2, the receiver would sense the h0 voltage of the pulse sent in time interval x−2. The receiver would also sense the h1 voltage of the pulse previously sent in time interval x−3. In addition, the receiver would sense the h2 voltage of the pulse previously sent in time interval x−4. Thus, the voltage sensed by the receiver at time interval x+2 is an accumulation of the effects of the pulses sent at time intervals x−4, x−3, and x−2 (and even pulses sent at time intervals before x−4). As this example shows, when the receiver senses a voltage during a time interval, it does not sense the effect of just one pulse but the accumulation of the effects of multiple pulses.
FIG. 1 shows the pulse response for a single positive-voltage pulse. The pulse response for a single negative-voltage pulse (representing a digital 0) is shown in FIG. 2. Notice that the pulse response of FIG. 2 is similar to the pulse response of FIG. 1 except that the voltages are negative instead of positive. Thus, as shown by FIGS. 1 and 2, the effect that a pulse has on future pulses will depend on whether that pulse is a positive-voltage pulse (representing a digital 1) or a negative-voltage pulse (representing a digital 0). If a pulse is a positive-voltage pulse, it will add to the voltages of future pulses. Conversely, if the pulse is a negative-voltage pulse, it will subtract from the voltages of future pulses.
As noted above, when the receiver senses a voltage during a time interval, it does not sense the effect of just one pulse but the accumulation of the effects of multiple pulses. That being the case, the receiver should not determine whether a digital 1 or digital 0 was sent based solely upon the voltage that it senses during a time interval. That may yield incorrect results as the effects of previously sent pulses may make a currently sensed voltage come very close to zero volts (or worse yet, may turn a positive voltage into a negative one or vice versa). Instead, the receiver should try to compensate for (i.e. remove) the effects of previously sent pulses to derive a compensated voltage, and then determine whether a digital 1 or digital 0 was sent based upon the compensated voltage. That way, a more accurate determination can be made.
To compensate for the effects of previously sent pulses, a receiver may convert an analog signal received during a current time interval into a corresponding digital value representative of the voltage of the analog signal. The receiver may then subtract a digital compensation value (which represents an approximation of the effects of previously sent pulses) from the corresponding digital value to derive a digital compensated value. The compensated value, which is a digital representation of the analog signal with the effects of previously sent pulses removed, is then compared against a digital reference value (e.g. a digital representation of zero volts). If the compensated value is greater than the reference value, then the receiver concludes that a digital 1 was sent. If the compensated value is less than the reference value, then the receiver concludes that a digital 0 was sent.
As noted above, the compensation value represents an approximation of the effects of previously sent pulses. In order to know what this compensation value should be, the receiver has to know what series of pulses (positive-voltage pulses and negative-voltage pulses) were sent prior to a currently sensed voltage. This is because different series of pulses will have different effects on a currently sensed voltage. For example, five previously sent pulses having four positive-voltage pulses followed by one negative-voltage pulse will have a different effect on a currently sensed voltage than five previously sent pulses having four negative-voltage pulses followed by one positive-voltage pulse.
To keep track of what pulses were previously sent, the receiver maintains an m number of “history bits”. These history bits reflect the last m bits that were received by the receiver, and provide an indication as to what types of pulses were previously sent. For example, suppose that m is five, and that the last five bits received by the receiver were 10010 (where the most significant bit is the most recently received bit). This would mean that the receiver received a digital 1 in the time interval preceding the current time interval, a digital 0 two time intervals before the current time interval, a digital 0 three time intervals before the current time interval, a digital 1 four time intervals before the current time interval, and a digital 0 five time intervals before the current time interval. Because a digital 1 means that a positive-voltage pulse was sent and a digital 0 means that a negative-voltage pulse was sent, this series 10010 of history bits would mean that the sequence of previously sent pulses was: a negative-voltage pulse, followed by a positive-voltage pulse, followed by a negative-voltage pulse, followed by a negative-voltage pulse, followed by a positive-voltage pulse.
The receiver may maintain the various digital compensation values in a memory. This memory would contain a compensation value for each possible series or combination of history bits (the terms “series of history bits” and “combination of history bits” may be used interchangeably hereinafter). For example, if five history bits are maintained, then the memory would contain 25 or 32 compensation values, with each compensation value corresponding to a particular combination of the five history bits. The memory may be set up such that the history bits may be used as address bits to access a particular compensation value corresponding to a particular combination of history bits. For example, if the history bits are 10010, then 10010 may be applied as address bits to the memory to access location 10010 which would contain the compensation value corresponding to history bits 10010. Set up in this manner, the compensation values can be accessed quickly and easily based upon the history bits.
The compensation values stored in the memory may be provided by an adaptation unit. The adaptation unit interacts with the receiver to iteratively receive error information pertaining to the compensation values, make determinations as to whether certain compensation values corresponding to certain combinations of history bits should be adjusted, and then adjust the compensation values stored in the memory. This iterative process carried out by the adaptation unit will cause the compensation values in the memory to eventually converge to a set of stable values. Once the compensation values converge, they reflect the proper values that should be used to compensate for the effects of previously sent pulses for each possible combination of history bits. Even after the compensation values converge, the adaptation unit continues to interact with the receiver to continually adjust the compensation values, as needed. That way, the receiver and adaptation unit can adjust dynamically to changes.
Ultimately, the compensation values enable a receiver to compensate for the pulse response effect experienced by that receiver. The pulse response characterizes the link performance (i.e. the behavior) of the link to which the receiver is coupled. Because the behavior of each link is different, different receivers coupled to different links will experience different pulse response effects. For example, a first receiver coupled to a first link will experience a different pulse response effect than a second receiver coupled to a second link. Because of this, each receiver stores a different set of compensation values, with each set of compensation values customized for the link to which that receiver is coupled. Because customized compensation values are needed for each receiver, and because the compensation values are provided by an adaptation unit, an adaptation unit is dedicated to each receiver. That adaptation unit is responsible for providing and maintaining the compensation values for that receiver.
In a large scale IC (e.g. a microprocessor), there can be a very large number of SerDes receivers implemented on the IC to enable it to effect high speed communication with other components. Currently, each receiver/adaptation unit combination consumes significant chip space and power. Because of this, the current architecture does not scale well.